package com.lbs.jiepiaisi.parser;

import android.util.Log;

import com.google.gson.Gson;
import com.lbs.jiepiaisi.bean.EquipmentEntity;
import com.lbs.jiepiaisi.bean.EquipmentEqNoEntity;
import com.lbs.jiepiaisi.utils.Constant;

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * 时间：2017/8/8 14:38
 * 作用：加载车解析类
 */

public class SelCarsAccountParser {
    //解析方法
    public static EquipmentEntity parser(String jsonString) {
        EquipmentEntity equipmentEntity = new EquipmentEntity();
        EquipmentEntity.Result result = new EquipmentEntity.Result();
        List<EquipmentEntity.Result.Item> ListItems = new ArrayList<EquipmentEntity.Result.Item>();
        try {
            JSONObject jsonObject = new JSONObject(jsonString);
            if (jsonObject.getInt("status") == 0) {
                JSONArray jsonArrayResult = jsonObject.getJSONArray("result");
                /**
                 * 设置设备总数
                 */
                equipmentEntity.setCode(Constant.STATUS_OK);
                if (jsonArrayResult.length() > 1) {
                    result.setCount(jsonArrayResult.getJSONObject(1).getInt("total"));
                    result.setTotal(jsonArrayResult.getJSONObject(1).getString("total").replaceAll("null", "0"));
                    result.setAct(jsonArrayResult.getJSONObject(1).getString("act").replaceAll("null", "0"));
                    result.setOff(jsonArrayResult.getJSONObject(1).getString("off").replaceAll("null", "0"));
                    result.setOl(jsonArrayResult.getJSONObject(1).getString("ol").replaceAll("null", "0"));
                    result.setUnact(jsonArrayResult.getJSONObject(1).getString("unact").replaceAll("null", "0"));
                }

                JSONArray JsonArrayItems = jsonArrayResult.getJSONObject(0).getJSONArray("items");
                //设置实体类数据对象的items信息
                for (int i = 0; i < JsonArrayItems.length(); i++) {
                    String lat = JsonArrayItems.getJSONObject(i).getJSONObject("point").getString("lat");
                    String lng = JsonArrayItems.getJSONObject(i).getJSONObject("point").getString("lng");
                    EquipmentEntity.Result.Item item = new EquipmentEntity.Result.Item();

                    item.setCnStatus(JsonArrayItems.getJSONObject(i).getString("cnStatus"));
                    if (!lat.equals("null")) {
                        EquipmentEntity.Result.Item.Point point = new EquipmentEntity.Result.Item.Point();
                        String rate = JsonArrayItems.getJSONObject(i).getJSONObject("point").getString("dir");

                        if (null != rate && !"null".equals(rate)) {
                            point.setRoate(Float.parseFloat(rate));
                        }
                        point.setLat(JsonArrayItems.getJSONObject(i).getJSONObject("point").getDouble("lat"));
                        point.setLng(JsonArrayItems.getJSONObject(i).getJSONObject("point").getDouble("lng"));
                        point.setPositionTime(JsonArrayItems.getJSONObject(i).getJSONObject("point").getString("positionTime"));
                        point.setPostType(JsonArrayItems.getJSONObject(i).getJSONObject("point").getString("postType"));
                        item.setPoint(point);
                    }
                    //设备型号
                    String eqModel = JsonArrayItems.getJSONObject(i).getString("eqModel");
                    item.setEqModel(!eqModel.equals("null") ? eqModel : "");
                    //Sim
                    String sim = JsonArrayItems.getJSONObject(i).getString("sim");
                    item.setSim(!sim.equals("null") ? sim : "");
                    //出厂时间
                    String createTime = JsonArrayItems.getJSONObject(i).getString("createTime");
                    item.setCreateTime(!createTime.equals("null") ? createTime : "");
                    //到期时间
                    String expTime = JsonArrayItems.getJSONObject(i).getString("expTime");
                    item.setExpTime(!expTime.equals("null") ? expTime : "");
                    //车主电话
                    String phone = JsonArrayItems.getJSONObject(i).getString("phone");
                    item.setPhone(!phone.equals("null") ? phone : "");
                    //车主身份证号码
                    String owenerId = JsonArrayItems.getJSONObject(i).getString("owenerId");
                    item.setOwenerId(!owenerId.equals("null") ? owenerId : "");
                    //车型
                    String vModel = JsonArrayItems.getJSONObject(i).getString("vModel");
                    item.setvModel(!vModel.equals("null") ? vModel : "");
                    //发动机号
                    String engineNo = JsonArrayItems.getJSONObject(i).getString("engineNo");
                    item.setEngineNo(!engineNo.equals("null") ? engineNo : "");
                    //车架号
                    String vin = JsonArrayItems.getJSONObject(i).getString("vin");
                    item.setVin(!vin.equals("null") ? vin : "");
                    //mark
                    String mark = JsonArrayItems.getJSONObject(i).optString("mark");
                    item.setMark(!mark.equals("null") ? mark : "");
                    //合同号
                    String contractNo = JsonArrayItems.getJSONObject(i).getString("contractNo");
                    item.setContractNo(!contractNo.equals("null") ? contractNo : "");
                    //车牌号
                    String plateNum = JsonArrayItems.getJSONObject(i).getString("plateNum");
                    item.setPlateNum(!plateNum.equals("null") ? plateNum : "");

                    /**
                     * 设置设备编号
                     */
                    String eqNo = JsonArrayItems.getJSONObject(i).getString("eqNo");
                    if (eqNo.equals("null")) {
                        item.setEqNo("无设备编号");
                    } else {
                        item.setEqNo(eqNo);
                    }
                    /**
                     * 车主姓名
                     */
                    String ownerName = JsonArrayItems.getJSONObject(i).getString("ownerName");
                    if (ownerName.equals("null")) {
                        item.setOwnerName(eqModel + "-" + eqNo.substring(10));
                    } else {
                        item.setOwnerName(ownerName);
                    }
                    /**
                     * 设备状态:静止行驶离线
                     */
                    String status = JsonArrayItems.getJSONObject(i).getString("status");
                    if (status.equals("2")) {//离线
                        item.setStatus("2");
                    } else {
                        item.setStatus(status);//不是离线状态
                    }
                    /**
                     * 设置部门编码
                     */
                    String deptId = JsonArrayItems.getJSONObject(i).getString("egId");
                    item.setDeptId(deptId);
                    /**
                     *  定位位置
                     */
                    if (JsonArrayItems.getJSONObject(i).getString("installerPosition").equals("null")) {
                        item.setInstallerPosition("无位置信息");
                    } else {
                        item.setInstallerPosition(JsonArrayItems.getJSONObject(i).getString("installerPosition"));
                    }
//                /********************************************************************/
                    ListItems.add(i, item);
//                /********************************************************************/

                }
            }else {
                equipmentEntity.setCode(Constant.STATUS_NETWORK_ERROR);
            }

        } catch (Exception e) {
            /**
             * 设置设备总数
             */
            equipmentEntity.setCode(Constant.STATUS_NETWORK_ERROR);
            result.setCount(0);
            e.printStackTrace();
        }
        result.setItems(ListItems);
        equipmentEntity.setResult(result);

        return equipmentEntity;
    }

    //解析方法
    public static EquipmentEqNoEntity parserEq(String jsonString) {
        return new Gson().fromJson(jsonString, EquipmentEqNoEntity.class);
    }
}
